草庐IT

Java Swingworker 和多线程

全部标签

面试官:说说线程池的工作原理?

线程池的底层是基于线程和任务队列来实现的,创建线程池的创建方式通常有以下两种:普通Java项目,使用ThreadPoolExecutor来创建线程池,这点《阿里巴巴Java开发手册》中也有说明,如下图所示:图片Spring项目中,会使用代码可读性更高的ThreadPoolTaskExecutor来创建线程池,虽然它的底层也是通过ThreadPoolExecutor来实现的,但ThreadPoolTaskExecutor可读性更高,因为它不需要在构造方法中设置参数,而是通过属性设置的方式来设置参数的,所以可读性更高。Spring内置的线程池ThreadPoolTaskExecutor的使用示例如

java - 如果线程修改的变量被标记为 volatile,为什么 false 共享是一个问题

我一直在看MartinThompson的文章。这是对错误共享的解释。http://mechanical-sympathy.blogspot.co.uk/2011/07/false-sharing.htmlpublicfinalclassFalseSharingimplementsRunnable{publicfinalstaticintNUM_THREADS=4;//changepublicfinalstaticlongITERATIONS=500L*1000L*1000L;privatefinalintarrayIndex;privatestaticVolatileLong[]lon

java - 多线程同时向非同步的ArrayList对象添加元素可能会导致什么问题?

多线程同时向非同步的ArrayList对象添加元素可能会导致什么问题?尝试用多线程的静态ArrayList运行一些实验,但找不到太多。在这里,我期待在多线程环境中不同步ArrayList或类似对象的很多副作用。任何显示副作用的好例子都是值得赞赏的。谢谢。下面是我的小实验,运行顺利,没有任何异常。我也想知道为什么它没有抛出任何ConcurrentModificationException?importjava.util.ArrayList;importjava.util.List;publicclassExperiment{staticListlist=newArrayList();pu

linux:线程的控制

个人主页:个人主页个人专栏:《数据结构》《C语言》《C++》《Linux》文章目录前言一、线程的总结1.线程的优点2.线程的缺点3.线程异常4.线程和进程二、线程的控制创建线程线程终止线程等待获取返回值线程分离总结前言本文作为我对于线程的简单总结,线程控制的知识总结一、线程的总结1.线程的优点创建一个新线程的代价比创建一个新进程小的多与进程之间的切换相比,线程之间的切换需要操作系统做的工作要小线程占有的资源要比进程少很多能充分利用多处理器的可并行数量(并行,多个执行流在同一时刻拿着不同的CPU继续运算,执行代码)在等待慢速I/O操作结束的同时,程序可执行其他的计算任务计算密集型应用,为了能在多

java - 在 Eclipse 中,如何让调试器显示所有堆栈帧而不单击每个线程上的展开?

我的服务器有100个正在运行的线程,我想知道是否有一种简单的方法可以通过一次单击来展开所有线程以显示它们的堆栈帧。 最佳答案 单击顶级线程(或应用程序),然后单击[Shift]+[右箭头]。根据您的级别,您可能需要执行此操作两次。 关于java-在Eclipse中,如何让调试器显示所有堆栈帧而不单击每个线程上的展开?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/9167190/

java - Java 中多线程的单元测试框架

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭5年前。Improvethisquestion您会推荐哪些框架来为Java中的多线程代码编写单元测试?例如,当您有一个程序应该执行一堆线程时,该线程具有多个允许的执行路径和某些排除的路径(例如“可执行单元1、2和3可以并行运行,至少应该运行两个并行,并且4始终必须在3"之后运行。

java - 如何调试挂起的 Java 线程?

我有以下问题:我在Tomcat(Linux)中部署了一个Web应用程序,在关闭Tomcat后,如果我执行ps-ef我仍然可以看到java进程正在运行。我相信这是由于一些挂起的线程而发生的,但我不知道如何追踪这个线程。我该如何调试这个问题? 最佳答案 您可以如下所述生成4-5个线程转储,然后使用Samurai等工具分析它们.您要检查的是,当发生卡住线程或长时间运行的事务时,所有线程转储都会显示某个线程ID位于您的Java堆栈跟踪中的同一行。简单来说,事务跨越多个线程转储,因此需要更多调查。现在,当您通过Samurai运行这些程序时,它

java - 什么是线程安全的 ByteArrayOutputStream?

我想从进程的输出和错误流中读取并将它们合并到一个文本流中。我的程序是常规的,读起来像这样:defmergeStream=newByteArrayOutputStream()process.waitForProcessOutput(mergeStream,mergeStream)问题是ByteArrayOutputStream不是线程安全的,waitForProcessOutput()生成两个附加到mergeStream的线程。有没有我可以使用的线程安全变体?您还建议我如何控制对mergeStream的访问?看起来在实践中字符有时会被此实现删除。 最佳答案

java - 多线程应用程序中的 NTLM 身份验证失败

我一直在尝试将一些代码放在一起,这些代码将(除其他外)将文件上传到使用NTLM身份验证的Sharepoint站点。该代码的早期版本是单线程的,并且运行良好。他们完全按照预期上传了文件,没有丝毫问题。然而,我最终尝试对这个应用程序进行多线程处理,以便它可以一次上传许多文件,同时继续处理其余的业务。但是,当我尝试对代码进行多线程处理时,它每次都会失败,并抛出IndexOutOfBoundsException。这对我诊断问题的实际原因毫无帮助。如果您想知道,如果我将CachedThreadExecutor更改为SingleThreadExecutor-强制代码进入单线程状态-它再次正常工作。

Linux之线程控制

目录一、POSIX线程库二、线程的创建三、线程等待四、线程终止五、分离线程六、线程ID:pthread_t1、获取线程ID2、pthread_t七、线程局部存储:__thread一、POSIX线程库由于Linux下的线程并没有独立特有的结构,所以Linux并没有提供线程相关的接口。而我们所说的,pthread线程库是应用层的原生线程库。这个线程库并不是系统接口直接提供的,而是由第三方帮我们提供的。1、与线程有关的函数构成了一个完整的系列,绝大多数函数的名字都是以“pthread_”打头的2、要使用这些函数库,要通过引入头文3、链接这些线程函数库时要使用编译器命令的“-lpthread”选项二、